<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        const arr = [2, 3, 3, 1, 4, 4, 5]
        //思路一
        const arr1 = [...new Set(arr)]

        //思路二 利用includes 
        const arr2 = []
        arr.forEach(item => {
            if (!arr2.includes(item)) {
                arr2.push(item)
            }
        })

        //思路三 利用filter+indexOf
        const arr3 = arr.filter((item, index, arr) => {
            return index === arr.indexOf(item)
        })
        console.log(arr3);

        // Map,WeakMap 
        // // 字典和对象是类似，但是字典Map更通用一点 键是没有要求 可以是任意类型 有顺序
        // const mymap = new Map([['a', 1], ['b', 2]])
        // console.log(mymap.get('a'));
        // console.log(mymap.keys());
        // console.log(mymap.values());

        // // WeakMap有一个优点 里面存的数据 不算引用数量，所以可以自动垃圾回收 不用程序员手动垃圾回 把值变成null  解决深拷贝的循环引用的问题

        // DOM事件模型 捕获 处于目标元素 冒泡
        // 事件委托（事件代理） 利用的是事件冒泡




        const data = [
            {id:1,title:'文章的标题',content:'一篇文章 1000字'},
            {id:1,title:'文章的标题',content:'一篇文章 1000字'},
            {id:1,title:'文章的标题',content:'一篇文章 1000字'}
        ]
    </script>
</body>

</html>